iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

題目說明

給定一個字符串,包含大中小括號,其中

思路說明

這題可以用 stack 處理

  1. 設定好 左右括號對應的 map
  2. 遍歷整個字符串
    1. 遇到左括號時,放到 stack 中
    2. 遇到右括號時,將一個元素 pop 出來,並從 map 中找到相對應 value,這個 value 若跟當前遇到的右括號不同,則為無效的 parentheses 直接回傳 false
  3. 遍歷完後,檢查 stack 中還有沒有元素,有的話代表還有括號沒配對到,則整個字符串視為無效的 parentheses

程式碼

class Solution:
    def isValid(self, s: str) -> bool:
        stack = deque()
        m = {'(':')','{':'}','[':']'}
        for c in s:
            if m.get(c, None):
                stack.append(c)
            else:
                if len(stack) == 0:
                    return False
                r = m.get(stack.pop(), None)
                if r != c:
                    return False
        return len(stack) == 0

上一篇
Day 27 - 150. Evaluate Reverse Polish Notation
下一篇
Day 29 - 1472. Design Browser History
系列文
Leetcode 習慣養成之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言